package com.example.ad.sdk.ui

import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
import com.example.ad.sdk.databinding.ActSplashAdBinding
import com.example.ad.sdk.domain.extensions.observeWithLifecycle
import com.example.ad.sdk.domain.view.mvi.BaseMVIActivity

object AdSplashActivityHelper{
     fun go(context: Context, url: String){
         val intent = Intent(context, AdSplashActivity::class.java)
         intent.putExtra("url", url)
        context.startActivity(intent)
    }
}

/**
 * AdSplashActivity 继承自 BaseActivity，用于展示第二个测试界面。
 * 该类使用 MVVM 架构，绑定 AdSplashBinding 和 AdSplashViewModel。
 */
class AdSplashActivity : BaseMVIActivity<ActSplashAdBinding, AdSplashViewModel>() {

    // 通过 by viewModel() 委托属性初始化 ViewModel
    override val vm by lazy { ViewModelProvider(this)[AdSplashViewModel::class.java] }
    /**
     * 初始化渲染器，设置按钮点击事件。
     */
    override fun initRenderers(savedInstanceState: Bundle?) {
        val url = intent.getStringExtra("url") ?: ""
        vm.sendIntentAction(AdSplashIntent.SaveUrlIntent(url = url))
        vb.webView.loadUrl(url)
    }

    /**
     * 观察 ViewModel 的状态和事件，更新 UI。
     * @param viewModel AdSplashViewModel 的实例，用于观察状态和事件。
     */
    override fun observeStateOrEvent(viewModel: AdSplashViewModel) {
        // 观察状态变化
        viewModel.state.observeWithLifecycle(this){
        }

        // 观察事件
        viewModel.effect.observeWithLifecycle(this){

        }
    }
}
